package cn.bonoon.kernel.web;

import cn.bonoon.kernel.expression.QueryParameter;

/**
 * <pre>
 * 在主工作区上添加第二导航栏
 * 
 * 可以创建自定义的内容、树结构或列表结构
 * 
 * 通过{@link #reloadFunction()}可以取得刷新函数的名称，调用该函数会刷新主工作区的列表的内容
 * 通过{@link #getId()}取主工作区的列表的ID
 * 可以另外设置第二导航区的宽度{@link #setWidth(int)}；宽度的设置以最后一次的设置主准
 * </pre>
 * @author jackson
 *
 */
public interface SecondaryWorkspace {
	int DEFAULT_WIDTH = 200;
	/**
	 * <pre>
	 * 列表的ID
	 * 
	 * 在对象创建的时候就已经指定的ID，所以任何时候都可以通过该方法直接取得列表的ID值
	 * </pre>
	 * @return
	 */
	String getId();
	/**
	 * <pre>
	 * 向主工作区的第二导航栏添加自定义的内容
	 * 
	 * 在执行{@link #parse()}函数之前进行赋值
	 * </pre>
	 * @param title
	 * @param content
	 * @param width
	 * @param property
	 * @param getter
	 * @param jss
	 */
	void add(String title, String content, int width, QueryParameter param, String...jss);
//	/**
//	 * js的刷新函数的名称
//	 * @return
//	 */
//	String reloadFunction();
	/**
	 * <pre>
	 * 重新设置宽度，如果被调用多次，则只取得大的值
	 * 
	 * 在执行{@link #parse()}函数之前进行赋值
	 * </pre>
	 * @param width
	 */
	void setWidth(int width);
	/**
	 * <pre>
	 * 向主工作区的第二导航栏添加树形导航结构
	 * 需要指定树的数据的加载路径及提交时字段的名称
	 * 
	 * 在执行{@link #parse()}函数之前进行赋值
	 * </pre>
	 * @param url
	 * @param property
	 */
	void tree(String url, String property);
	/**
	 * <pre>
	 * 向主工作区的第二导航栏添加列表
	 * 
	 * 在执行{@link #parse()}函数之前进行赋值
	 * </pre>
	 * @param property
	 * @param modelName
	 */
	void list(String property, String modelName);
}
